package com.dingding.common.core.message.factory;

import java.util.Date;

import org.apache.log4j.Logger;

import com.alibaba.dubbo.container.Main;
import com.dingding.common.core.message.AbstractMessage;
import com.dingding.common.core.message.responsemsg.usualmsg.text.TextMsgRsp;
import com.dingding.common.core.message.responsemsg.usualmsg.video.Video;
import com.dingding.common.core.message.responsemsg.usualmsg.video.VideoMsgRsp;
import com.dingding.common.core.util.ToolUtil;
import com.dingding.common.core.util.XMLParse;

/**
 * @ClassName: ResponseMessageFactory
 * @Description:回复消息的工厂类
 * @author fengshuonan
 * @date 2015年10月19日 下午3:17:46
 */
@SuppressWarnings("all")
public class ResponseMessageFactory implements AbstractMessageFactory{

	private Logger log = Logger.getLogger(this.getClass());
	
	/**
	 * @Title: createMessage
	 * @Description:创建响应消息
	 * @param fromUser 信息发出的用户微信id
	 * @param toUser 信息目的地的用户微信id
	 * @param msgType 信息类型()
	 * @author fengshuonan
	 * @return T 创建消息后的实例
	 * @throws
	 */
	@Override
	public <T extends AbstractMessage> T createMessage(String fromUser,String toUser,String msgType) {

		try {
			Class<?> clazz = Class.forName("com.dingding.common.core.message.responsemsg.usualmsg."
											+ msgType + "."
											+ ToolUtil.firstLetterToUpper(msgType) + "MsgRsp");
			AbstractMessage abstractMessage = (AbstractMessage) clazz
					.newInstance();
			
			//设置信息发出的用户微信id
			abstractMessage.setFromUserName(fromUser);
			
			//设置信息发送目的地的用户微信id
			abstractMessage.setToUserName(toUser);
			
			//设置消息创建时间
			abstractMessage.setCreateTime(String.valueOf(new Date().getTime()));
			
			//设置消息类型
			abstractMessage.setMsgType(msgType);
			
			return (T) abstractMessage;
			
		} catch (ClassNotFoundException e) {
			log.error("创建响应消息的时候找不到类!ResponseMessageFactory：ClassNotFoundException（）",e);
			
		} catch (InstantiationException e) {
			log.error("创建响应消息的时候，不能实例化一个接口或抽象类!ResponseMessageFactory：ClassNotFoundException（）",e);
			
		} catch (IllegalAccessException e) {
			log.error("创建响应消息的时候，不能实例化一个接口或抽象类!ResponseMessageFactory：ClassNotFoundException（）",e);
		}

		return null;
	}

}
